<!DOCTYPE html>
<html lang="zh-Hans">
  <head>
    
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>


<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />

<meta name="theme-color" content="#f8f5ec" />
<meta name="msapplication-navbutton-color" content="#f8f5ec">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="#f8f5ec">



  <meta name="description" content="冒着大雨跑去听了 PHPCON 2016 的技术讲座,一些感想"/>




  <meta name="keywords" content="生活, 工作, 杂鱼君的博客" />










  <link rel="alternate" href="/atom.xml" title="杂鱼君的博客">




  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=2.6.0" />



<link rel="canonical" href="http://notes.wen.moe/post/impression-about-phpcon-2016.html"/>


<link rel="stylesheet" type="text/css" href="/css/style.css?v=2.6.0" />



  <link rel="stylesheet" type="text/css" href="/lib/fancybox/jquery.fancybox.css" />




  



  <script id="baidu_push">
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>









    <title> PHPCON2016 的一些心得 - 杂鱼君的博客 </title>
  </head>

  <body><div id="mobile-navbar" class="mobile-navbar">
  <div class="mobile-header-logo">
    <a href="/." class="logo">杂鱼君的博客</a>
  </div>
  <div class="mobile-navbar-icon">
    <span></span>
    <span></span>
    <span></span>
  </div>
</div>

<nav id="mobile-menu" class="mobile-menu slideout-menu">
  <ul class="mobile-menu-list">
    
      <a href="/">
        <li class="mobile-menu-item">
          
          
            Home
          
        </li>
      </a>
    
      <a href="/archives/">
        <li class="mobile-menu-item">
          
          
            Archives
          
        </li>
      </a>
    
      <a href="/tags">
        <li class="mobile-menu-item">
          
          
            Tags
          
        </li>
      </a>
    
      <a href="/about">
        <li class="mobile-menu-item">
          
          
            About
          
        </li>
      </a>
    
  </ul>
</nav>

    <div class="container" id="mobile-panel">
      <header id="header" class="header"><div class="logo-wrapper">
  <a href="/." class="logo">杂鱼君的博客</a>
</div>

<nav class="site-navbar">
  
    <ul id="menu" class="menu">
      
        <li class="menu-item">
          <a class="menu-item-link" href="/">
            
            
              Home
            
          </a>
        </li>
      
        <li class="menu-item">
          <a class="menu-item-link" href="/archives/">
            
            
              Archives
            
          </a>
        </li>
      
        <li class="menu-item">
          <a class="menu-item-link" href="/tags">
            
            
              Tags
            
          </a>
        </li>
      
        <li class="menu-item">
          <a class="menu-item-link" href="/about">
            
            
              About
            
          </a>
        </li>
      
    </ul>
  
</nav>

      </header>

      <main id="main" class="main">
        <div class="content-wrapper">
          <div id="content" class="content">
            
  
  <article class="post">
    <header class="post-header">
      <h1 class="post-title">
        
          PHPCON2016 的一些心得
        
      </h1>

      <div class="post-meta">
        <span class="post-time">
          2016-06-30
        </span>
        
        
      </div>
    </header>

    
    
  <div class="post-toc" id="post-toc">
    <h2 class="post-toc-title">Contents</h2>
    <div class="post-toc-content">
      <ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#php-在金融股票项目中的运用-超群"><span class="toc-text">php 在金融股票项目中的运用 (@超群)</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#PPT概要"><span class="toc-text">PPT概要</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#听后感"><span class="toc-text">听后感</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#PHP系统问题排查实践-信海龙"><span class="toc-text">PHP系统问题排查实践 (@信海龙)</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#PPT概要-1"><span class="toc-text">PPT概要</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#听后感-1"><span class="toc-text">听后感</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#PHP7-Swoole开发超高性能后台程序-韩天峰"><span class="toc-text">PHP7+Swoole开发超高性能后台程序 (@韩天峰)</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#听后感-2"><span class="toc-text">听后感</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#起点中文网全新改版的协程之路-张凌"><span class="toc-text">起点中文网全新改版的协程之路 (@张凌)</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#PPT概要-2"><span class="toc-text">PPT概要</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#听后感-3"><span class="toc-text">听后感</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#百万并发下PHP协程-非阻塞框架设计实践-代维"><span class="toc-text">百万并发下PHP协程+非阻塞框架设计实践 (@代维)</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#听后感-4"><span class="toc-text">听后感</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Sys-Schema-赖明星"><span class="toc-text">Sys-Schema (@赖明星)</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#PPT概要-3"><span class="toc-text">PPT概要</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#听后感-5"><span class="toc-text">听后感</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#总结"><span class="toc-text">总结</span></a></li></ol>
    </div>
  </div>


    <div class="post-content">
      
        <p><a href="http://7xlj2t.com1.z0.glb.clouddn.com/PPT.zip" target="_blank" rel="external">点击下载讲座的PPT</a></p>
<h2 id="php-在金融股票项目中的运用-超群"><a href="#php-在金融股票项目中的运用-超群" class="headerlink" title="php 在金融股票项目中的运用 (@超群)"></a>php 在金融股票项目中的运用 (@超群)</h2><h3 id="PPT概要"><a href="#PPT概要" class="headerlink" title="PPT概要"></a>PPT概要</h3><ul>
<li>变量类型如何做限制以防被转换</li>
<li>浮点数的精度问题</li>
<li>数据准确性如何校验</li>
<li>如何应对短时间大量的请求</li>
<li>客户端多个请求合并(kql)</li>
</ul>
<h3 id="听后感"><a href="#听后感" class="headerlink" title="听后感"></a>听后感</h3><p>因为我上一家公司就是金融资讯类公司,同时也在开发配资和基金项目,当时由于经验不足等原因,开发过程中碰到了很多坑.所以对这个演讲格外感兴趣.</p>
<p>一般来说php是不太适合开发金融系统的,一个很大的原因就是php是弱类型+动态类型的语言(具体强/弱,动态/静态的区别可以google一下,大致就是强/弱类型区别在于是否允许隐式转换,动态/静态区别在于是否要明确定义变量类型),这很容易由于开发人员疏忽导致数值误差<br>比如:</p>
<figure class="highlight php"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="number">0</span> == <span class="keyword">null</span></div><div class="line"><span class="number">0</span> == <span class="keyword">false</span></div><div class="line"><span class="string">''</span> == <span class="number">0</span></div></pre></td></tr></table></figure>
<p>这对一个金融系统是很要命的事情,更何况数据库是严格区分<code>0</code>,<code>null</code>,<code>false</code>的,问题就更多了.</p>
<h2 id="PHP系统问题排查实践-信海龙"><a href="#PHP系统问题排查实践-信海龙" class="headerlink" title="PHP系统问题排查实践 (@信海龙)"></a>PHP系统问题排查实践 (@信海龙)</h2><h3 id="PPT概要-1"><a href="#PPT概要-1" class="headerlink" title="PPT概要"></a>PPT概要</h3><ul>
<li>php线上环境中一些常见的问题形式</li>
<li>解决问题的基本思路</li>
<li>一些调试的工具</li>
<li>几个经典的案例分析 (具体过程演讲者的博客有详细描述,链接在下面)<ul>
<li>crontab脚本执行并发冲突的问题 <a href="http://www.bo56.com/crond%E4%B8%AD%E4%BD%BF%E7%94%A8flock%E5%91%BD%E4%BB%A4%E7%9A%84%E5%9D%91/" target="_blank" rel="external">链接</a></li>
<li>gearman导致cpu100问题 <a href="http://www.bo56.com/php%E8%BF%9B%E7%A8%8B%E5%AF%BC%E8%87%B4%E6%9C%8D%E5%8A%A1%E5%99%A8cpu-100%E9%97%AE%E9%A2%98%E8%BF%BD%E6%9F%A5%E8%BF%87%E7%A8%8B/" target="_blank" rel="external">链接</a></li>
<li>找出有问题的负载服务器 <a href="http://www.bo56.com/tcpdump-%E5%92%8C-wireshark%E7%BB%84%E5%90%88%E6%8B%B3%EF%BC%8C%E6%8F%AA%E5%87%BA%E6%9C%89%E9%97%AE%E9%A2%98%E7%9A%84%E6%9C%BA%E5%99%A8/" target="_blank" rel="external">链接</a></li>
<li>程序后端执行的一个坑 <a href="http://www.bo56.com/%E5%9C%A82016%E7%9A%84phpcon%E5%A4%A7%E4%BC%9A%E4%B8%8A%E7%9A%84%E5%88%86%E4%BA%ABppt%E4%B8%8B%E8%BD%BD/" target="_blank" rel="external">链接</a></li>
</ul>
</li>
</ul>
<h3 id="听后感-1"><a href="#听后感-1" class="headerlink" title="听后感"></a>听后感</h3><p>因为我自己对服务器的维护也很感兴趣,之前工作中也负责线上服务器的异常处理,所以这场对我也非常有吸引力.</p>
<p>之前的工作经历中,基本90%的问题都能通过</p>
<p><strong>http code -&gt; nginx 的 error.log &amp; access.log -&gt; php的error.log &amp; slow.log -&gt; mysql 的 slow-log</strong></p>
<p>这一套流程解决,然而剩下的10%就不是那么容易了,演讲者分享的几个案例自己也碰到过.</p>
<p>有一次是一个每隔2分钟执行一次的crotnab脚本出现问题,计算出来的结果出错.排除代码逻辑问题以后,认定是脚本执行冲突的问题,正常情况下脚本的执行时间只有几十秒左右,然而在服务器负载比较高的情况下,这个时间被大大延长,导致了上一次脚本还没结束,新的脚本又开始执行了.解决办法就如同<a href="http://www.bo56.com/%E8%A7%A3%E5%86%B3crond%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E5%B9%B6%E5%8F%91%E5%86%B2%E7%AA%81%E9%97%AE%E9%A2%98/" target="_blank" rel="external">这里</a> 说的,添加文件锁.</p>
<p>还有一次是发现某几台服务器无法响应请求,各种检查以后发现 logrotate 进程卡死不再处理日志了,再加上监控漏掉了针对硬盘空间的监控,导致nginx日志塞满了服务器, 于是php-fpm无法启动了……</p>
<h2 id="PHP7-Swoole开发超高性能后台程序-韩天峰"><a href="#PHP7-Swoole开发超高性能后台程序-韩天峰" class="headerlink" title="PHP7+Swoole开发超高性能后台程序 (@韩天峰)"></a>PHP7+Swoole开发超高性能后台程序 (@韩天峰)</h2><h3 id="听后感-2"><a href="#听后感-2" class="headerlink" title="听后感"></a>听后感</h3><p><del>韩老师的日常吹Swoole,傍上php7以后吹的更欢了</del></p>
<p>因为我并没用过swoole,因此仅仅听个热闹,并没有什么特别的感觉.不过韩老师最后透露Swoole2.0很快就要发布了,底层实现了协程,不再需要yield关键字了.<del>并没有什么卵用,因为底层还是没摆脱yield</del></p>
<h2 id="起点中文网全新改版的协程之路-张凌"><a href="#起点中文网全新改版的协程之路-张凌" class="headerlink" title="起点中文网全新改版的协程之路 (@张凌)"></a>起点中文网全新改版的协程之路 (@张凌)</h2><h3 id="PPT概要-2"><a href="#PPT概要-2" class="headerlink" title="PPT概要"></a>PPT概要</h3><ul>
<li>公开资源和vip资源cdn鉴权的处理</li>
<li>灰度测试模型<ul>
<li>客户端模型</li>
<li>后台模型</li>
<li>Web模型<ul>
<li>Web模型的灰度策略</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="听后感-3"><a href="#听后感-3" class="headerlink" title="听后感"></a>听后感</h3><p><del>Swoole神教徒之一</del></p>
<p>比较吸引我的是他们针对cdn资源鉴权处理的相关优化,起点中文网之前只有公众的小说章节在CDN上,VIP章节需要从自己的服务器上全文获取.改版之后,所有的小说章节都放在CDN上,然后部署一系列的鉴权服务器专门做权限认证工作,在流量和响应速度上都有很大的改进.</p>
<p>以及他们对如何进行更好的灰度测试的探索.</p>
<h2 id="百万并发下PHP协程-非阻塞框架设计实践-代维"><a href="#百万并发下PHP协程-非阻塞框架设计实践-代维" class="headerlink" title="百万并发下PHP协程+非阻塞框架设计实践 (@代维)"></a>百万并发下PHP协程+非阻塞框架设计实践 (@代维)</h2><h3 id="听后感-4"><a href="#听后感-4" class="headerlink" title="听后感"></a>听后感</h3><p> <del>Swoole神教徒之二,不是很懂你们Swoole</del></p>
<p> 以他们公司的 <code>Zan Framework</code> 为基础讲了非阻塞框架的设计,没太听明白,就不误导大家了.大家可以自己研究.</p>
<h2 id="Sys-Schema-赖明星"><a href="#Sys-Schema-赖明星" class="headerlink" title="Sys-Schema (@赖明星)"></a>Sys-Schema (@赖明星)</h2><h3 id="PPT概要-3"><a href="#PPT概要-3" class="headerlink" title="PPT概要"></a>PPT概要</h3><ul>
<li>sys-schema 的概要和使用方法</li>
<li>sys-schema 如何帮助你找到你最想知道的答案</li>
<li>sys-schema 进阶的一些函数使用</li>
<li>MySQL 索引的原理,技巧和各种要注避免的坑</li>
</ul>
<h3 id="听后感-5"><a href="#听后感-5" class="headerlink" title="听后感"></a>听后感</h3><p>个人听得很认真的一场演讲.这场演讲主要讲的是如何运用MySQL 5.7默认安装的 sys-schema 库进行数据库的性能分析和sql优化,以及索引的一些技巧和注意事项,挺实用的,比较接地气.</p>
<p>我对MySQL 5.7 最大的印象除了支持json以外,就是默认的更加严格的sql_mode设置,这导致我以前写的那些烂sql全部报错无法执行了.所以我安装mysql之后第一件事就是<br><code>vim /etc/my.cnf</code>  &amp; <code>sql_mode=&quot;&quot;</code>  <strong>大家不要学我 -_-!</strong></p>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>以上就是我在 PHPCON2016 第一天听来的内容了. 简单的写了点自己的想法,很遗憾因为要加班,所以第二天的讲座错过了,没能和鸟哥合影挺遗憾的.</p>

      
    </div>

    
      
      

  <div class="post-copyright">
    <p class="copyright-item">
      <span>Author: </span>
      <a href="http://notes.wen.moe">zakokun</a>
    </p>
    <p class="copyright-item">
      <span>Link: </span>
      <a href="http://notes.wen.moe/post/impression-about-phpcon-2016.html">http://notes.wen.moe/post/impression-about-phpcon-2016.html</a>
    </p>
    <p class="copyright-item">
      <span>License: </span>
      
      <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/" target="_blank">知识共享署名-非商业性使用 4.0 国际许可协议</a>
    </p>
  </div>



      
      
    

    
      <footer class="post-footer">
        
          <div class="post-tags">
            
              <a href="/tags/生活/">生活</a>
            
              <a href="/tags/工作/">工作</a>
            
          </div>
        
        
        
  <nav class="post-nav">
    
      <a class="prev" href="/post/linux-pressure-testing-tool.html">
        <i class="iconfont icon-left"></i>
        <span class="prev-text nav-default">使用 http_load 测试服务器的负载</span>
        <span class="prev-text nav-mobile">Prev</span>
      </a>
    
    
      <a class="next" href="/post/2015-year-person-summarize.html">
        <span class="next-text nav-default">2015年终总结</span>
        <span class="prev-text nav-mobile">Next</span>
        <i class="iconfont icon-right"></i>
      </a>
    
  </nav>

      </footer>
    

  </article>


          </div>
          
  <div class="comments" id="comments">
    
      <div id="disqus_thread">
        <noscript>
          Please enable JavaScript to view the
          <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a>
        </noscript>
      </div>
    
  </div>


        </div>
      </main>

      <footer id="footer" class="footer">

  <div class="social-links">
    
      
        
          <a href="mailto:me@wen.moe" class="iconfont icon-email" title="email"></a>
        
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        
          <a href="https://www.instagram.com/zakokun" class="iconfont icon-instagram" title="instagram"></a>
        
      
    
    
    
  </div>


<div class="copyright">
  <span class="power-by">
    Powered by <a class="hexo-link" href="https://hexo.io/">Hexo</a>
  </span>
  <span class="division">|</span>
  <span class="theme-info">
    Theme -
    <a class="theme-link" href="https://github.com/ahonn/hexo-theme-even">Even</a>
  </span>
  <span class="division">|</span>
  <span class="theme-info">
    Hosted by <a class="theme-link" href="https://pages.coding.me" style="font-weight: bold">Coding Pages</a>
  </span>

  <span class="copyright-year">
    
    &copy;
    
      2014 -
    
    2017

    <span class="heart">
      <i class="iconfont icon-heart"></i>
    </span>
    <span class="author">zakokun</span>
  </span>
</div>

      </footer>

      <div class="back-to-top" id="back-to-top">
        <i class="iconfont icon-up"></i>
      </div>
    </div>

    
  
  <script type="text/javascript">
    var disqus_config = function () {
        this.page.url = 'http://notes.wen.moe/post/impression-about-phpcon-2016.html';
        this.page.identifier = 'post/impression-about-phpcon-2016.html';
        this.page.title = 'PHPCON2016 的一些心得';
    };
    (function() {
    var d = document, s = d.createElement('script');

    s.src = '//evanszhang.disqus.com/embed.js';

    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
    })();  
  </script>




    
  





  
    <script type="text/javascript" src="/lib/jquery/jquery-3.1.1.min.js"></script>
  

  
    <script type="text/javascript" src="/lib/slideout/slideout.js"></script>
  

  
    <script type="text/javascript" src="/lib/fancybox/jquery.fancybox.pack.js"></script>
  


    <script type="text/javascript" src="/js/src/even.js?v=2.6.0"></script>
<script type="text/javascript" src="/js/src/bootstrap.js?v=2.6.0"></script>

  </body>
</html>
